//--------------------Sonic CD HUD Script---------------------//
//--------Scripted by Christian Whitehead 'The Taxman'--------//
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//

// Aliases
// Not all of these are used here in the HUD script, some are just used as a way for other objects to globally transmit values
private alias Object.Value0 : Object.Timer     // Initially set via a loop in the UFO script
private alias Object.Value1 : Object.EndoTimer     // Initially set via a loop in the UFO script
private alias Object.Value3 : Object.EndoRandom    // Initially set via a loop in the UFO script
private alias Object.Value4 : Object.EndoAI    // Initially set via a loop in the UFO script
private alias Object.Value5 : Object.ScareTimer    // Initially set via a loop in the UFO script

private alias Object.Value6 : Object.EndoRise    // Initially set via a loop in the UFO script
private alias Object.Value7 : Object.MoveTime    // Initially set via a loop in the UFO script
private alias Object.Value8 : Object.RandomLocation1    // Initially set via a loop in the UFO script

private alias Object.Value9 : Object.DoorTime    // Initially set via a loop in the UFO script
private alias Object.Value10 : Object.HeadShake    // Initially set via a loop in the UFO script
private alias Object.Value11 : Object.Tweak    // Initially set via a loop in the UFO script

private alias Object.Value12 : Object.EndoActivate    // Initially set via a loop in the UFO script

private alias Object.Value13 : Object.FlashTimer    // Initially set via a loop in the UFO script


private alias Object[6].Value1 : Object.CameraState

// Priority
private alias 1 : PRIORITY_ACTIVE

private alias 0 : CAM_SHOWSTAGE_0
private alias 1 : CAM_DININGHALL_1
private alias 2 : CAM_BACKSTAGE_2
private alias 3 : CAM_PIRATESCOVE_3
private alias 4 : CAM_WESTHALL_4
private alias 5 : CAM_CLOSET_5
private alias 6 : CAM_WHALLCORNER_6
private alias 7 : CAM_EASTHALL_7
private alias 8 : CAM_EHALLCORNER_8
private alias 9 : CAM_KITCHEN_9
private alias 10 : CAM_BATHROOMS_10

private alias 15 : OFFICE_ATDOOR
private alias 16 : OFFICE_JUMPSCARES

private alias object.state : Endo.State



event ObjectMain
//-1 is basically the ai level 0 ig

if Object[5].Type == TypeName[Blank Object]

	switch Endo.state
	case 15
		StopMusic()
		PlaySfx(SfxName[Jumpscare], 0)			
		object.state = 17
	break
	case 16	//wa
		Object.ScareTimer++
		Object.DoorTime = 300
		rand(temp2, 100)
		Object.DoorTime += temp2
		if Object.ScareTimer >= Object.DoorTime
			StopMusic()
			PlaySfx(SfxName[Jumpscare], 0)			
			object.state++
		end if
	break
	case 17
		PlayerJumpscared = 1
		if Object.EndoRise > -100
			Object.EndoRise -= 16
		else
			Object.EndoRise = -100
		end if
	break	
	case 2
		if CameraEnabled == 1
			if Object.CameraState == endo.state
				if FlashLocked == 0
					if inputdown.buttonZ == 1
						Object.FlashTimer -= 5
					end if	
				end if	
			end if	
	
		if Object.EndoActivate == 0
			Object.EndoTimer++
			Object.MoveTime = 500
			rand(temp3, 100)
			Object.MoveTime += temp3
			//RNG to try and move
			if Object.EndoTimer >= Object.MoveTime 
				Rand(Object.EndoRandom, 20)
				//actually moving
				if Object.EndoAI > Object.EndoRandom 
					//these align with the cameras he goes to
					//state 10 is cam 10
					//15+ is at the office watch out

					if Object[6].value1 == Endo.state
						object[6].alpha = 355
					end if
				
					Endo.state = Object.CameraState
					Object.FlashTimer = 350
					Object.EndoActivate = 1
					
					if Object[6].value1 == Endo.state
						object[6].alpha = 355
					end if	
				end if
				Object.EndoTimer = 0	
			end if
		else
	

			if Object.FlashTimer > 0
				Object.EndoTimer++
				Object.MoveTime = 550
				rand(temp3, 100)
				Object.MoveTime += temp3
				//RNG to try and move
				if Object.EndoTimer >= Object.MoveTime 
					Rand(Object.EndoRandom, 20)
					//actually moving
					if Object.EndoAI > Object.EndoRandom 
						//these align with the cameras he goes to
						//state 10 is cam 10
						//15+ is at the office watch out

						if Object[6].value1 == Endo.state
							object[6].alpha = 355
						end if				

						//you die :)
						Endo.state = 15
						
						if Object[6].value1 == Endo.state
							object[6].alpha = 355
						end if	

					
					end if
					Object.EndoTimer = 0	
				else
					Endo.state = Object.CameraState	
				end if
			else
				if Object[6].value1 == Endo.state
					object[6].alpha = 355
				end if			
				Endo.state = 2
				Object.EndoTimer = 0
				Object.EndoActivate = 0
			end if	
		end if	
		end if
	break
	default
		if CameraEnabled == 1
			if Object.CameraState == endo.state
				if FlashLocked == 0
					if inputdown.buttonZ == 1
						Object.FlashTimer -= 5
					end if	
				end if	
			end if	
		

			if Object.FlashTimer > 0
				Object.EndoTimer++
				Object.MoveTime = 550
				rand(temp3, 100)
				Object.MoveTime += temp3
				//RNG to try and move
				if Object.EndoTimer >= Object.MoveTime 
					Rand(Object.EndoRandom, 20)
					//actually moving
					if Object.EndoAI > Object.EndoRandom 
						//these align with the cameras he goes to
						//state 10 is cam 10
						//15+ is at the office watch out

						if Object[6].value1 == Endo.state
							object[6].alpha = 355
						end if				

						//you die :)
						Endo.state = 15
						
						if Object[6].value1 == Endo.state
							object[6].alpha = 355
						end if	

					
					end if
					Object.EndoTimer = 0	
				else
					Endo.state = Object.CameraState	
				end if
			else
				if Object[6].value1 == Endo.state
					object[6].alpha = 355
				end if			
				Endo.state = 2
				Object.EndoTimer = 0
				Object.EndoActivate = 0
			end if	
		end if		
	break
	end switch
end if	
end event

event ObjectDraw

//	DrawNumbers(0, 32, 96, Endo.state, 3, 8, 0)

//	DrawNumbers(0, 64, 96, Object.FlashTimer, 3, 8, 0)

	rand(Object.HeadShake, 6)

//	DrawNumbers(0, 96, 96, Object.HeadShake, 3, 8, 0)

	if Endo.state == 17
		object.drawOrder = 5
		temp1 = Screen.xsize
		temp1 /= 2
		temp1 -= 140

		temp2 = temp1
		temp2 += Object.HeadShake

		DrawSpriteScreenFX(10, FX_SCALE, temp2, Object.EndoRise)	//body
		DrawSpriteScreenFX(11, FX_SCALE, temp2, Object.EndoRise)	//head
	end if

	

end event


event ObjectStartup
	
	LoadSpriteSheet("FNAF/Jumpscares.gif")
	
	// Place the HUD object into reserved object slot 4 and initialise its values
	Object[14].Type = TypeName[Endo]
	
	// The object should always be run, regardless if it's within camera bounds or not
	Object[14].Priority = PRIORITY_ACTIVE
	
	// Make the HUD draw ontop of all other sprites, too
	Object[14].DrawOrder = 5

	Endo[14].state = CAM_BACKSTAGE_2

	// 0-9 - Numbers 0-9
	SpriteFrame(0, 0, 8, 13, 558, 1)
	SpriteFrame(0, 0, 8, 13, 567, 1)
	SpriteFrame(0, 0, 8, 13, 576, 1)
	SpriteFrame(0, 0, 8, 13, 585, 1)
	SpriteFrame(0, 0, 8, 13, 594, 1)
	SpriteFrame(0, 0, 8, 13, 558, 15)
	SpriteFrame(0, 0, 8, 13, 567, 15)
	SpriteFrame(0, 0, 8, 13, 576, 15)
	SpriteFrame(0, 0, 8, 13, 585, 15)
	SpriteFrame(0, 0, 8, 13, 594, 15)

	SpriteFrame(10, 280, 248, 60, 329, 120)
	SpriteFrame(72, 150, 124, 148, 204, 120)	//11	

end event


// ========================
// Editor events
// ========================

event RSDKDraw
	DrawSprite(0)
end event


event RSDKLoad
	LoadSpriteSheet("3D_Test/Objects.gif")
	SpriteFrame(0, 0, 24, 16, 206, 58)

	SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
end event
